<?php
/*
 * Pago DAL.
 * @Autor: Inicial.cl.
 */
class PagoDAL {
	//METODO PARA GRABAR PAGO.
	public static function grabar($oPago){
		try{
			$arr = array(
				"{#IDUSUARIO}" => $oPago->getIdUsuario(),
				"{#FECHAPAGO}" => $oPago->getFechaPago(),
				"{#MONTO}" => $oPago->getMonto(),
				"{#DETALLE}" => $oPago->getDetalle(),
				"{#COMISIONAQUIEN}" => $oPago->getComisionAQuien(),
				"{#COMISIONPORCENTAJE}" => $oPago->getComisionPorcentaje(),
				"{#COMISIONMONTO}" => $oPago->getComisionMonto(),
				"{#IDESTADO}" => $oPago->getIdEstado()
			);
			$query = Util::getQuery($arr, PagoSQL::$GRABAR_PAGO);
			$arrDatos = Bd::exec($query);

			$id = Bd::$IDENTITY; //Retorno id insertado
			return $id;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA EDITAR PAGO.
	public static function editar($oPago){
		try{
			$arr = array(
				"{#ID}" => $oPago->getId(),
				"{#IDUSUARIO}" => $oPago->getIdUsuario(),
				"{#FECHAPAGO}" => $oPago->getFechaPago(),
				"{#MONTO}" => $oPago->getMonto(),
				"{#DETALLE}" => $oPago->getDetalle(),
				"{#FECHACREACION}" => $oPago->getFechaCreacion(),
				"{#COMISIONAQUIEN}" => $oPago->getComisionAQuien(),
				"{#COMISIONPORCENTAJE}" => $oPago->getComisionPorcentaje(),
				"{#COMISIONMONTO}" => $oPago->getComisionMonto(),
				"{#IDESTADO}" => $oPago->getIdEstado()
			);
			$query = Util::getQuery($arr, PagoSQL::$EDITAR_PAGO);
			$arrDatos = Bd::exec($query);

		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA LISTAR PAGO.
	public static function listar($oPago){
		try{
			$arr = array(
				"{#IDUSUARIO}" => $oPago->getIdUsuario()
			);
			$query = Util::getQuery($arr, PagoSQL::$LISTAR_PAGO);
			$arrDatos = Bd::exec($query);
			$arrPago = array();

			if (count($arrDatos) > 0) {
				foreach ($arrDatos as $row) {
					$oPago = new Pago();

					$oPago->setId($row["id"]);
					$oPago->setIdUsuario($row["idUsuario"]);
					$oPago->setFechaPago($row["fechaPago"]);
					$oPago->setMonto($row["monto"]);
					$oPago->setDetalle($row["detalle"]);
					$oPago->setFechaCreacion($row["fechaCreacion"]);
					$oPago->setComisionAQuien($row["comisionAQuien"]);
					$oPago->setComisionPorcentaje($row["comisionPorcentaje"]);
					$oPago->setComisionMonto($row["comisionMonto"]);
					$oPago->setIdEstado($row["idEstado"]);

					$arrPago[] = $oPago;
				}
			}

			return $arrPago;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA OBTENER POR ID PAGO.
	public static function obtenerPorId($id){
		try{
			$arr = array(
					"{#ID}" => $id
				);
			$query = Util::getQuery($arr, PagoSQL::$OBTENER_PAGO_POR_ID);
			$arrDatos = Bd::exec($query);

			if (count($arrDatos) > 0) {
				$oPago = new Pago();

				foreach ($arrDatos as $row) {
					$oPago->setId($row["id"]);
					$oPago->setIdUsuario($row["idUsuario"]);
					$oPago->setFechaPago($row["fechaPago"]);
					$oPago->setMonto($row["monto"]);
					$oPago->setDetalle($row["detalle"]);
					$oPago->setFechaCreacion($row["fechaCreacion"]);
					$oPago->setComisionAQuien($row["comisionAQuien"]);
					$oPago->setComisionPorcentaje($row["comisionPorcentaje"]);
					$oPago->setComisionMonto($row["comisionMonto"]);
					$oPago->setIdEstado($row["idEstado"]);
				}
				return $oPago;
			}
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA ELIMINAR PAGO.
	public static function eliminar($id){
		try{
			$arr = array("{#ID}" => $id);
				$query = Util::getQuery($arr, PagoSQL::$ELIMINAR_PAGO);
				$arrDatos = Bd::exec($query);

		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

        public static function obtenerTotalPagoPorUsuario($idUsuario) {
            try {
                $arr = array(
                    "{#IDUSUARIO}" => $idUsuario
                );
                $query = Util::getQuery($arr, PagoSQL::$OBTENER_TOTAL_PAGO_POR_USUARIO);
                $valor = Bd::exec($query, Bd::SCALAR);
                if(is_null($valor)) { $valor = "0"; }

                return $valor;
            } catch (Excepcion $e) {
                throw new Exception($e->getMessage());
            }
        }

	//METODO PARA OBTENER TOTAL PAGOS REALIZADOS MES ACTUAL
	public static function obtenerPagosMesActual(){
		try{
			$arr = array();
			$query = Util::getQuery($arr, PagoSQL::$OBTENER_PAGOS_MES_ACTUAL);
			$arrDatos = Bd::exec($query);
			return $arrDatos;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA OBTENER TOTAL PAGOS REALIZADOS EN LA HISTORIA
	public static function obtenerPagosHistorico(){
		try{
			$arr = array();
			$query = Util::getQuery($arr, PagoSQL::$OBTENER_PAGOS_HISTORICO);
			$arrDatos = Bd::exec($query);
			return $arrDatos;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}


}
?>